// axios基础封装
import axios from 'axios'
import {ElMessage} from 'element-plus'


export const httpInstance = axios.create(
    {
        // 配置请求头
        headers: {
            'Content-Type': 'application/json'
        },
        // 配置基地址
        // baseURL: 'http://localhost:8082/api',  // 本地开发地址 有后端的时候
        baseURL: 'https://api.schedule.honlnk.top/api',  // 域名地址
        timeout: 10000, // 超时时间 10秒钟

    }
)

// 如果项目里需要多个不同的业务模块作为基地址，那么就可以使用axios实例的实例化方法来创建多个axios实例 比如：
// 当然本项目只需要一个基地址就足够了，所以不需要这么多

// export const httpInstance2 = axios.create({
//     baseURL: 'http://127.0.0.1:4523/m1/4092649-0-default',
//     timeout: 10000
// })


// 拦截器配置
// axios请求拦截器
httpInstance.interceptors.request.use((config) => {
    // 请求之前做些什么
    return config
}, (error) => {
    // 请求之后做点什么
    return Promise.reject(error)
})
// axios响应式拦截器
httpInstance.interceptors.response.use((response) => {
    // 响应成功做点什么
    const {data} = response;
    if (!data.code) {
        if (data.msg !== "暂时还没有生成值班表，请前往生成值班表，或者等值班表生成之后再来获取") {
            ElMessage.error(data.msg);
            return Promise.reject(data);
        }

    }
    return data
}, (error) => {
    // 响应失败做点什么
    // console.log(error)
    const {response} = error;
    // 请求超时 && 网络错误单独判断，没有 response
    if (error.message.indexOf("timeout") !== -1)
        ElMessage.error("请求超时！请您稍后重试");
    if (error.message.indexOf("Network Error") !== -1)
        ElMessage.error("网络错误！请您稍后重试");
    // 根据服务器响应的错误状态码，做不同的处理
    if (response) ElMessage.error(checkStatus(response.status));
    return Promise.reject(error)
})


// httpInstance.interceptors.response.use(null, UserStore);

/**
 * @description: 校验网络请求状态码
 * @param {Number} status
 * @return void
 */
export const checkStatus = (status) => {
    return {
        400: "请求失败！请您稍后重试",
        401: "登录失效！请您重新登录",
        403: "当前账号无权限访问！",
        404: "你所访问的资源不存在！",
        405: "请求方式错误！请您稍后重试",
        408: "请求超时！请您稍后重试",
        500: "服务异常！",
        502: "网关错误！",
        503: "服务不可用！",
        504: "网关超时！"
    }[status] ?? "未知错误"

};

